﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TPDiseño.Interfaces
{
    public partial class Ingresar : Form
    {
        public Ingresar()
        {
            InitializeComponent();
        }

        private void tabPage1_Click(object sender, EventArgs e)
        {

        }

        private void tabPage2_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor; //cursor de espera

            if (tabControl1.SelectedTab == tabControl1.TabPages[1])
            {
                Clases_de_Control.Gestor_Candidato gc = new Clases_de_Control.Gestor_Candidato();
                Clases_de_Control.Gestor_Cuestionario gcu = new Clases_de_Control.Gestor_Cuestionario();

                if ((comboBox_TipoDoc.Text == "") || (textBox_NumeroDoc.Text == "") || (textBox_Clave.Text == ""))
                {
                    MessageBox.Show("Debe completar todos los campos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else // se completaron todos los campos
                {
                    //busca el candidato, si existe lo retorna
                    Clases_de_Entidad.Candidato candidato = gc.buscar(comboBox_TipoDoc.Text, Convert.ToInt32(textBox_NumeroDoc.Text));

                    if (candidato._nro_candidato != 0) //siempre que exista candidato
                    {
                        //llama a buscarAct_EnProc en gestor de cuestionario y devuelve un cuestionario
                        Clases_de_Entidad.Cuestionario cuest_activo = gcu.buscarCuestAct_EnProc(candidato, textBox_Clave.Text);

                        Clases_de_Control.Gestor_Evaluacion geval = new Clases_de_Control.Gestor_Evaluacion();
                        Clases_de_Entidad.Evaluacion eval = new Clases_de_Entidad.Evaluacion();
                        DateTime time;
                        time = DateTime.Now;
                        
                        
                        if (cuest_activo._cod_cuestionario != 0) // si encontro cuestionario activo
                        {
                            eval = geval.CargarUnaEvaluacion(cuest_activo);

                            if (eval._fecha_fin < time)
                            {
                                if (cuest_activo._estado._cod_estado == 2)
                                {
                                    cuest_activo._estado._cod_estado = 4;
                                    cuest_activo = gcu.guardarCuestionario(cuest_activo);
                                }

                                else if (cuest_activo._estado._cod_estado == 1)
                                {
                                    cuest_activo._estado._cod_estado = 3;
                                    cuest_activo = gcu.guardarCuestionario(cuest_activo);
                                }
                            }

                            if (cuest_activo._estado._cod_estado == 3 || cuest_activo._estado._cod_estado==4)
                            {
                                MessageBox.Show("Ha finalizado el tiempo para completar el cuestionario. El cuestionario quedará como "+ cuest_activo._estado._estado , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                limpiarCandidato();
                            }
                            else
                            {
                                MessageBox.Show("Candidato logueado con éxito", "Candidato logueado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                this.Close();
                                CompletarCuest2 inter = new CompletarCuest2();
                                inter.MdiParent = Interfaces.Principal.ActiveForm;
                                Principal.ActiveForm.MainMenuStrip.Items[2].Enabled = true;
                                Principal.ActiveForm.MainMenuStrip.Items[0].Enabled = false;
                                
                                if (cuest_activo._bloque == 0)
                                    cuest_activo._bloque++;

                                inter.cuest = cuest_activo;
                                inter.Show();
                            }
                        }
                        else
                        {
                            MessageBox.Show("El Candidato no posee cuestionarios activos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            limpiarCandidato();
                        }
                    }
                    else
                    {
                        MessageBox.Show("No se encontró el Candidato ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        limpiarCandidato();
                    }
                }
            }
            else
            {
                if ((textBox_Usuario.Text == "") || (textBox_Contraseña.Text == ""))
                {
                    MessageBox.Show("Debe completar todos los campos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    
                }
                else
                {
                    Clases_de_Control.Gestor_Consultor gConsultor = new Clases_de_Control.Gestor_Consultor();
                    int result = gConsultor.validar(textBox_Usuario.Text, textBox_Contraseña.Text); // busca si existe el consultor
                    if (result == 1)
                    {
                        MessageBox.Show("Consultor logueado con éxito", "Consultor logueado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        Principal.ActiveForm.MainMenuStrip.Items[1].Enabled = true;
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("El Consultor no existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        limpiarConsultor();
                    }
                }
            }
            Cursor.Current = Cursors.Default; //cursor normal
        }

        private void Ingresar_Load(object sender, EventArgs e)
        {
            
        }

        private void limpiarCandidato()
        {
            comboBox_TipoDoc.Text = "";
            textBox_NumeroDoc.Text = "";
            textBox_Clave.Text = "";
        }

        private void limpiarConsultor()
        {
            textBox_Usuario.Text = "";
            textBox_Contraseña.Text = "";
        }

        private void textBox_Contraseña_Leave(object sender, EventArgs e)
        {
            button1.Focus();
        }

        private void textBox_Clave_Leave(object sender, EventArgs e)
        {
            button1.Focus();
        }

    }
}
